#include <stdio.h>
#include <stdlib.h>

void pointer_of_pointint_to_head_array(void);
void pointer_of_array (void);

int main ()
{
    pointer_of_pointint_to_head_array();
    printf("************************************************************\n");
    pointer_of_array();
    system("pause");
    return 0;
}

void pointer_of_pointint_to_head_array(void)
{
       /* 带有 5 个元素的整型数组 */
   double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
   double *p;
   int i;
 
   p = balance;
 
   /* 输出数组中每个元素的值 */
   printf( "using Array value of pointer\n"); //使用指针的数组值
   for ( i = 0; i < 5; i++ )
   {
       printf("*(p + %d) : %f\n",  i, *(p + i) );
   }
 
   printf( "Use balance as the array value of the address\n"); // 使用 balance 作为地址的数组值
   for ( i = 0; i < 5; i++ )
   {
       printf("*(balance + %d) : %f\n",  i, *(balance + i) );
   }
}

// 指向数组首位的指针，与数组的指针效果是等价的:
void pointer_of_array (void)
{
   /* 带有 5 个元素的整型数组 */
   double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
   double *p;
   int i;
 
   p = balance;
 
   /* 输出数组中每个元素的值 */
   printf( "using array value of pointer\n"); //使用指针的数组值
   printf( "using p[i] as array value of address\n"); //使用 p[i] 作为地址的数组值
   for ( i = 0; i < 5; i++ )
   {
       printf("p[%d]: %f\n",  i, p[i] );
   }

}






/*
使用数组名作为常量指针是合法的，
反之亦然。因此，*(balance + 4) 是一种访问 balance[4] 数据的合法方式。




*/